﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using BusinessLayer.Interfaces;
using BusinessLayer.Implementacion;
using EntityLayer;
using DevExpress.Web.ASPxEditors;

namespace proyGestionActivos.Gestion
{
    public partial class wfrmSolicitarAdquisicionLicencia : System.Web.UI.Page
    {
        IFacadeSolicitarAdquicion BLSolicitarAdquisicion;
        IFacadeActualizarPrograma BLActualizarPrograma;
        IFacadeOrdenCompra BLOrdenCompra;
        private static int idAccion;
        private static string idSolicitud="";
        protected void Page_Load(object sender, EventArgs e)
        {
            if (Session["SesionUser"] == null)
            {
                Response.Redirect("~/Administracion/Login.aspx");
                return;
            }
            if (!IsPostBack)
            {
                this.validarUserLogin();
                this.cargarComboPrograma();
            }

            this.inHabilitarModificar();
        }

        private void validarUserLogin()
        {//Session["SesionUserGestion"]

            try
            {
                T_Usuario listUser = new T_Usuario();
                listUser=(T_Usuario)Session["SesionUser"];
                BLSolicitarAdquisicion = new FacadeSolicitarAdquicion();
                List<T_Usuario_Sistema> listaUsuario = new List<T_Usuario_Sistema>();
                listaUsuario = BLSolicitarAdquisicion.listarUsuarioxID(listUser.COD_USUARIO_VEH);
                List<T_Area> listaArea = new List<T_Area>();
                if (listaUsuario.Count != 0)
                {
                    listaArea = BLSolicitarAdquisicion.listarAreaxID(listaUsuario[0].CodigoArea);

                    txtUsuario.Text = String.Format("{0} {1}", listaUsuario[0].NombreUsuario, listaUsuario[0].ApellidoUsuario);
                    Session["ID"] = listaUsuario[0].CodigoUsuario;
                    Session["ID_AREA"] = listaUsuario[0].CodigoArea; ;
                    txtArea.Text = listaArea[0].NombreArea;
                    txtIDCodigo.Text = listaUsuario[0].CodigoUsuario;
                    txtIDArea.Text = listaUsuario[0].CodigoArea;

                }
            }
            catch (Exception ex)
            {
                lblmenOK.Text = ex.InnerException == null ? ex.Message : ex.InnerException.Message;
                popupOK.ShowOnPageLoad = true;
            }

        }

        private void cargarComboPrograma()
        {
            BLSolicitarAdquisicion = new FacadeSolicitarAdquicion();
            try
            {
                cboPrograma.DataSource = BLSolicitarAdquisicion.listarProgramas();
                cboPrograma.TextField = "NombrePrograma";
                cboPrograma.ValueField = "CodigoPrograma";
                cboPrograma.DataBind();
                int cont = cboPrograma.Items.Count;
                cboPrograma.Items.Insert(cont, new ListEditItem("NUEVO", "NUEVO"));
            }
            catch (Exception ex)
            {
                lblmenOK.Text = ex.InnerException == null ? ex.Message : ex.InnerException.Message;
                popupOK.ShowOnPageLoad = true;
            }
        }

        private bool insertarSolicitud()
        {
            bool flag = false;
            BLSolicitarAdquisicion = new FacadeSolicitarAdquicion();
            try
            {
                string numSolicitud = "";
                T_Solicitud_Adquisicion objSolicitud = new T_Solicitud_Adquisicion();
                objSolicitud.NumeroSolicitud = BLSolicitarAdquisicion.ObtenerNroSolicitudMax();
                numSolicitud = objSolicitud.NumeroSolicitud;
                objSolicitud.NumeroCuenta = txtCuenta.Text;
                objSolicitud.NumeroLicencias =Convert.ToInt32(txtLicencias.Text);
                objSolicitud.Sustento = txtSustento.Text;
                objSolicitud.CodigoUsuario = Session["ID"].ToString();
                objSolicitud.CodigoPrograma = (string)cboPrograma.Value;
                objSolicitud.FechaRequerida = dteRequerido.Date;
                if (BLSolicitarAdquisicion.InsertarSolicitud(objSolicitud))
                {flag=true;
                    idSolicitud = numSolicitud;
                    //lblmenOK.Text = "Se registro correctamente la solicitud.";
                    ////solicitud ingresada
                    //popupOK.ShowOnPageLoad = true;
                }
            }
            catch (Exception ex)
            {flag=false;
                lblmenOK.Text = ex.InnerException == null ? ex.Message : ex.InnerException.Message;
                popupOK.ShowOnPageLoad = true;
            }
            return flag;
        }

        private void limpiarControles()
        {
            txtCuenta.Text=string.Empty;
           txtLicencias.Text=string.Empty;
            txtSustento.Text=string.Empty;
          txtIDCodigo.Text=string.Empty;
            cboPrograma.SelectedIndex = 0;
           dteRequerido.Text=string.Empty;
        }

        //Metodo para insertar OrdenCompra

        private void insertarOrdenCompra()
        {
            BLOrdenCompra = new FacadeOrdenCompra();
            try
            {
                T_Orden_Compra objOrdenCompra = new T_Orden_Compra();
                objOrdenCompra.NumeroOrdenCompra = BLOrdenCompra.ObtenerNroOrdenCompraMax();
                objOrdenCompra.NumeroCuenta = txtCuenta.Text;
                objOrdenCompra.NumeroLicencias = Convert.ToInt32(txtLicencias.Text);
                objOrdenCompra.Sustento = txtSustento.Text;
                objOrdenCompra.NumeroSolicitud = idSolicitud;
                objOrdenCompra.CodigoBaseTecnica = null;
                objOrdenCompra.CodigoRequerimiento = null;
                objOrdenCompra.FechaRequerida = dteRequerido.Date;
                objOrdenCompra.estado = false;
                if (BLOrdenCompra.InsertarOrdenCompra(objOrdenCompra))
                {
                    lblmenOK.Text = "Se registro correctamente la solicitud.";
                    //solicitud ingresada
                    popupOK.ShowOnPageLoad = true;
                }
            }
            catch (Exception ex)
            {
                lblmenOK.Text = ex.InnerException == null ? ex.Message : ex.InnerException.Message;
                popupOK.ShowOnPageLoad = true;
            }
        }

        //Metodos de popup Agregar Programa

        private void cargarGrillaProgramas()
        {
            BLActualizarPrograma = new FacadeActualizarPrograma();
            try
            {
                grdPrograma.DataSource = BLActualizarPrograma.listarProgramas();
                grdPrograma.DataBind();
            }
            catch (Exception adc)
            {

                lblmenOK.Text = adc.Message;
                popupOK.HeaderText = "Error al cargar grilla";
                popupOK.ShowOnPageLoad = true;
            }
        }

        private void insertarPrograma()
        {
            BLActualizarPrograma = new FacadeActualizarPrograma();
            try
            {
                T_Programa obj = new T_Programa();
                obj.CodigoPrograma = BLActualizarPrograma.ObtenerNroProgramaMax();
                obj.Concurrente = chkConcurrente.Checked;
                obj.Descripcion = txtDescripcion.Text;
                obj.Estado = Convert.ToBoolean(Convert.ToInt16(cboEstado.Value.ToString()));
                obj.Fabricante = txtFabricante.Text;
                obj.NombrePrograma = txtPrograma.Text;
                if (BLActualizarPrograma.Insertar(obj))
                {
                    lblmenOK.Text = "Se registro programa  correctamente.";
                    popupOK.HeaderText = "Mensaje";
                    popupOK.ShowOnPageLoad = true;
                }
            }
            catch (Exception adc)
            {
                lblmenOK.Text = adc.Message;
                popupOK.HeaderText = "Error al cargar grilla";
                popupOK.ShowOnPageLoad = true;
            }
        }

        private void modificarPrograma()
        {
            BLActualizarPrograma = new FacadeActualizarPrograma();
            try
            {
                T_Programa obj = new T_Programa();
                obj.CodigoPrograma = txtCodigoPrograma.Text;
                obj.Concurrente = chkConcurrente.Checked;
                obj.Descripcion = txtDescripcion.Text;
                obj.Estado = Convert.ToBoolean(Convert.ToInt16(cboEstado.Value.ToString()));
                obj.Fabricante = txtFabricante.Text;
                obj.NombrePrograma = txtPrograma.Text;
                if (BLActualizarPrograma.Modificar(obj))
                {
                    lblmenOK.Text = "Se modificó correctamente el programa.";
                    popupOK.HeaderText = "Mensaje";
                    popupOK.ShowOnPageLoad = true;
                }
            }
            catch (Exception adc)
            {
                lblmenOK.Text = adc.InnerException == null ? adc.Message : adc.InnerException.Message;
                popupOK.HeaderText = "Error al cargar grilla";
                popupOK.ShowOnPageLoad = true;
            }
        }

        private void eliminarPrograma()
        {
            BLActualizarPrograma = new FacadeActualizarPrograma();
            try
            {
                T_Programa obj = new T_Programa();
                obj.CodigoPrograma = txtCodigoPrograma.Text;
                obj.Concurrente = chkConcurrente.Checked;
                obj.Descripcion = txtDescripcion.Text;
                obj.Estado = Convert.ToBoolean(Convert.ToInt16(cboEstado.Value.ToString()));
                obj.Fabricante = txtFabricante.Text;
                obj.NombrePrograma = txtPrograma.Text;
                if (BLActualizarPrograma.Eliminar(obj))
                {
                    lblmenOK.Text = "Se eliminó el programa seleccionado.";
                    popupOK.HeaderText = "Mensaje";
                    popupOK.ShowOnPageLoad = true;
                }
            }
            catch (Exception adc)
            {
                lblmenOK.Text = adc.Message;
                popupOK.HeaderText = "Error al cargar grilla";
                popupOK.ShowOnPageLoad = true;
            }
        }

        private void limpiarControlesPopup()
        {
            txtCodigoPrograma.Text = string.Empty;
            txtDescripcion.Text = string.Empty;
            txtFabricante.Text = string.Empty;
            txtPrograma.Text = string.Empty;
            cboEstado.SelectedIndex = 0;
            chkConcurrente.Checked = false;
        }

 //------------------------------------------------------------

        protected void btnAceptar_Click(object sender, EventArgs e)
        {
            //if (Convert.ToInt32(txtLicencias.Text)>=1)
            //{
            //    lblmenOK.Text = "Error al registrar solicitud, intentar de nuevo.";
            //    popupOK.ShowOnPageLoad = true;
            //}
            if (this.insertarSolicitud())
            {
                this.insertarOrdenCompra();
            }
            else
            {
                lblmenOK.Text = "Error al registrar solicitud, intentar de nuevo.";
                popupOK.ShowOnPageLoad = true;
            }
            
            this.limpiarControles();
        }

        protected void btnCancelarP_Click(object sender, EventArgs e)
        {
            //Response.Redirect("../Index.aspx");
            Response.Redirect("~/Administracion/wFrmDefault.aspx?id=rTbdn/32SJs=");
        }

        protected void btnEnviar_Click(object sender, EventArgs e)
        {
            lblmenConfir.Text = "Estas seguro de registrar solicitud de licencia.";
            popupConfirmar.ShowOnPageLoad = true;
        }

        protected void btnAgregar_Click(object sender, EventArgs e)
        {
            idAccion = 1;
            lblmenConfir0.Text = "Estas seguro de registrar este programa.";
            popupConfirProg.ShowOnPageLoad = true;
        }

        protected void btnModificar_Click(object sender, EventArgs e)
        {
            idAccion = 2;
            lblmenConfir0.Text = "Estas seguro de modificar este programa.";
            popupConfirProg.ShowOnPageLoad = true;
        }

        protected void btnEliminar_Click(object sender, EventArgs e)
        {
            idAccion = 3;
            lblmenConfir0.Text = "Estas seguro de eliminar este programa.";
            popupConfirProg.ShowOnPageLoad = true;
        }

        protected void grdPrograma_FocusedRowChanged(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                return;
            }
            if (grdPrograma.FocusedRowIndex != -1)
            {
                txtCodigoPrograma.Text = grdPrograma.GetRowValues(grdPrograma.FocusedRowIndex, "CodigoPrograma").ToString();
                txtPrograma.Text = grdPrograma.GetRowValues(grdPrograma.FocusedRowIndex, "NombrePrograma").ToString();
                txtDescripcion.Text = grdPrograma.GetRowValues(grdPrograma.FocusedRowIndex, "Descripcion").ToString();
                txtFabricante.Text = grdPrograma.GetRowValues(grdPrograma.FocusedRowIndex, "Fabricante").ToString();
                cboEstado.SelectedIndex = Convert.ToBoolean(grdPrograma.GetRowValues(grdPrograma.FocusedRowIndex, "Estado")) == true ? 0 : 1;
                chkConcurrente.Checked = (bool)grdPrograma.GetRowValues(grdPrograma.FocusedRowIndex, "Concurrente");
                btnAgregar.ClientEnabled = false;
                btnModificar.ClientEnabled = true;

            }
      
        }

        protected void btnAceptarPrograma_Click(object sender, EventArgs e)
        {
            if (idAccion==1)
            {
                this.insertarPrograma();
            }
            else if (idAccion==2)
            {
                this.modificarPrograma();
            }
            else if (idAccion == 3)
            {
                this.eliminarPrograma();
            }
            else
            {
                lblmenOK.Text = "No se especifico ninguna acción";
                popupOK.HeaderText = "Mensaje";
                popupOK.ShowOnPageLoad = true;
            }

            this.cargarGrillaProgramas();
            this.limpiarControlesPopup();
            this.cargarComboPrograma();
            cboPrograma.SelectedIndex = 0;
        }

        protected void cboPrograma_ValueChanged(object sender, EventArgs e)
        {
            if (cboPrograma.Value.ToString() == "NUEVO")
            {
                this.cargarGrillaProgramas();
                popupAgregarProg.ShowOnPageLoad = true;
            }
        }

        protected void btnCerrar_Click(object sender, EventArgs e)
        {
            cboPrograma.SelectedIndex = 0;
            this.limpiarControlesPopup();
            btnAgregar.ClientEnabled = false;
        }

        private void inHabilitarModificar()
        {
            if (txtCodigoPrograma.Text == string.Empty || txtFabricante.Text == string.Empty || txtDescripcion.Text == string.Empty || txtPrograma.Text == string.Empty)
            {
                btnModificar.ClientEnabled = false;
            }
            else
            {
                btnAgregar.ClientEnabled = true;
            }

        }

        protected void btnAceptarResponse_Click(object sender, EventArgs e)
        {
            Response.Redirect("~/Administracion/wFrmDefault.aspx?id=rTbdn/32SJs=");
        }

    }
}